import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    // 项目基础路径
    baseURL: "http://www.zzh.zone",
    // 登录标记
    isLogin: false,
    // 用户信息
    user: { user_name: "点击登录", avatar: "/subscriber-fill.png" },
    // 购物车
    cart: [],
    // 商品列表
    cakeList: [],
    cashcardList: [],
    pickupcardList: [],
    // 产品规格
    attr: {
      // 蛋糕尺寸
      size: [
        { id: "1", name: "Φ15cm" },
        { id: "2", name: "Φ18cm" },
        { id: "3", name: "Φ20cm" },
        { id: "4", name: "Φ25cm" },
        { id: "5", name: "Φ30cm" },
        { id: "6", name: "Φ35cm" },
        { id: "7", name: "Φ40cm" },
        { id: "8", name: "3层" },
        { id: "9", name: "4层" },
        { id: "10", name: "5层" },
        { id: "11", name: "6层" },
        { id: "12", name: "8层" },
      ],
      // 蛋糕胚
      crust: [
        { id: "1", name: "原味蛋糕" },
        { id: "2", name: "巧克力味蛋糕" },
        { id: "3", name: "提拉米苏慕斯蛋糕" },
        { id: "4", name: "乳酪蛋糕" },
      ],
      // 蛋糕夹心
      layer: [
        { id: "1", name: "无水果夹心" },
        { id: "2", name: "杂果夹心" },
        { id: "3", name: "酸奶提子夹心" },
        { id: "4", name: "黑樱桃夹心" },
      ],
    },
  },
  mutations: {
    // 用户登录事件
    userLogin(state, user) {
      // 登录状态更新
      state.isLogin = true;
      state.user = user;
      // 登录缓存更新
      sessionStorage.setItem("isLogin", state.isLogin);
      sessionStorage.setItem("user", JSON.stringify(user));
    },
    // 用户注销事件
    userLogout(state) {
      // 登录缓存更新
      sessionStorage.removeItem("isLogin");
      // 登录状态更新
      state.isLogin = false;
      state.user = {
        user_name: "点击登录",
        avatar: "/subscriber-fill.png",
      };
      state.cart = "";
      sessionStorage.clear();
    },
    // 获取用户信息
    getUserinfo(state) {
      // 验证登录状态
      let isLogin = sessionStorage.getItem("isLogin");
      if (isLogin) {
        // 更新登录状态
        state.isLogin = isLogin;
        // 获取用户信息缓存
        let userinfo = JSON.parse(sessionStorage.getItem("user"));
        let cart = JSON.parse(sessionStorage.getItem("cart"));
        // 更新用户信息
        state.user = userinfo;
        state.cart = cart;
      }
    },
    // 添加商品到购物车
    pushCart(state, goods) {
      let tag = true;
      // 从当前购物车中搜索商品
      for (let item of state.cart) {
        // 当前购物车中已有该商品，则计数+1
        if (item.id == goods.id) {
          tag = false;
          item.count++;
          break;
        }
      }
      // 如果没有，则将商品添加到购物车
      if (tag) {
        state.cart.push(goods);
        state.cart[state.cart.length - 1].count = 1;
      }
      // 更新购物车缓存
      sessionStorage.setItem("cart", JSON.stringify(state.cart));
    },
    // 从购物车删除商品
    delGoods(state, goods) {
      state.cart.forEach((item, index) => {
        if (item.id == goods) {
          state.cart.splice(index, 1);
        }
      });
      sessionStorage.setItem("cart", JSON.stringify(state.cart));
    },
    saveList(state, req) {
      state[req.type] = req.list;
    },
  },
  actions: {},
  modules: {},
});
